package com.eternal.permission.entity;

import java.util.Date;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
import java.util.Objects;

import com.baomidou.mybatisplus.annotations.Version;

import com.eternal.permission.entity.enums.IsOpenEnum;
import com.eternal.permission.entity.enums.PTypeEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 基础权限表
 * </p>
 *
 * @author Eternal
 * @since 2018-08-26
 */
@Data
@Accessors(chain = true)
@TableName("b_permission_info")
public class PermissionInfo extends Model<PermissionInfo> {

    private static final long serialVersionUID = 1L;

    /**
     * 权限编号  UUID
     */
    @TableId("p_id")
    private String pId;
    /**
     * 权限代码  手动填写有意义的字符串
     */
    @TableField("p_code")
    private String pCode;
    /**
     * 权限名称
     */
    @TableField("p_name")
    private String pName;
    /**
     * 权限类型：1、模块权限，2、菜单权限、3、按钮权限，4、数据权限
     */
    @TableField("p_type")
    private PTypeEnum pType;
    /**
     * 父级权限代码
     */
    @TableField("p_parent_code")
    private String pParentCode;

    @TableField("icon")
    private String icon;
    /**
     * 是否开启：0、关闭，1、开启
     */
    @TableField("is_open")
    private IsOpenEnum isOpen;
    /**
     * 创建时间
     */
    @TableField("create_tiem")
    private Date createTiem;
    /**
     * 是否可用：0不可，1可用
     */
    @TableField("is_available")
    private String isAvailable;
    /**
     * 访问地址
     */
    @TableField("p_url")
    private String pUrl;

    /**
     * 分组代码
     */
    @TableField("group_code")
    private String groupCode;

    @TableField("is_leaf")
    private String isLeaf;

    @TableField("group_name")
    private String groupName;

    @TableField("describe")
    private String describe;

    @TableField("sort")
    private Integer sort;

    @Override
    protected Serializable pkVal() {
        return this.pId;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        PermissionInfo that = (PermissionInfo) o;
        return Objects.equals(pId, that.pId);
    }

    @Override
    public int hashCode() {
        return Objects.hash(pId);
    }
}
